package com.rzhd.coursepatriarch.common.view;

import android.content.Context;
import android.os.Build;
import android.support.v4.widget.NestedScrollView;
import android.util.AttributeSet;
import android.util.Log;
import android.view.View;

/**
 * @author yql
 * Time: 2018/5/28.
 */

public class ObservableScrollView extends NestedScrollView {

    /**
     * 主要是用在用户手指离开MyScrollView，MyScrollView还在继续滑动，我们用来保存Y的距离，然后做比较
     */
    private int lastScrollY;

    private boolean mDisableEdgeEffects = true;
    private View mView;//需要渐变色的view
    private int mViewHeight = 0;

    public ObservableScrollView(Context context) {
        this(context, null);
    }

    public ObservableScrollView(Context context, AttributeSet attrs) {
        this(context, attrs, 0);
    }

    public ObservableScrollView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);

    }

    /**
     * @param x    代表滑动后当前ScrollView可视界面的左上角在整个ScrollView的X轴中的位置
     * @param y    当前可视界面的左上角在整个ScrollView的Y轴上的位置
     * @param oldx 也就是滑动前的X轴位置了
     * @param oldy 移动前的Y轴位置了
     */
    @Override
    protected void onScrollChanged(int x, int y, int oldx, int oldy) {
        super.onScrollChanged(x, y, oldx, oldy);
        if (mView != null && mViewHeight != 0)
            onShadeScroll(x, y);
    }

    @Override
    protected float getTopFadingEdgeStrength() {
        if (mDisableEdgeEffects && Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
            return 0.0f;
        }
        return super.getTopFadingEdgeStrength();
    }

    @Override
    protected float getBottomFadingEdgeStrength() {
        if (mDisableEdgeEffects && Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) {
            return 0.0f;
        }
        return super.getBottomFadingEdgeStrength();
    }

    public void setBackgroundColor(View view, int viewHeight) {
        this.mView = view;
        this.mViewHeight = viewHeight;
    }

    /**
     * 滑动改变渐变颜色
     *
     * @param x 代表滑动后当前ScrollView可视界面的左上角在整个ScrollView的X轴中的位置
     * @param y 当前可视界面的左上角在整个ScrollView的Y轴上的位置
     */
    private void onShadeScroll(int x, int y) {
        // TODO Auto-generated method stub
        // Log.i("TAG", "y--->" + y + "    height-->" + height);
//        if (y <= 0) {
//            mView.setBackgroundColor(0);//AGB由相关工具获得，或者美工提供
//        } else if (y > 0 && y <= mViewHeight) {
//            float scale = (float) y / mViewHeight;
//            float alpha = (255 * scale);
//            // 只是layout背景透明(仿知乎滑动效果)
//            mView.setAlpha(alpha);
//        } else {
//            mView.setBackgroundColor(backgroundColor);
//        }

        if (y <= 0) {
            mView.getBackground().setAlpha(0);
//            back.getBackground().setAlpha(255);
//            shopping_cart.getBackground().setAlpha(255);
        } else if (y > 0 && y <= mViewHeight) {
            int scale = y * 255 / mViewHeight;
            int alpha = (scale);
            Log.e("this", "透明度：" + alpha + "  坐标y:" + y + "   view高度：" + mViewHeight);
            mView.getBackground().setAlpha(alpha);
//            back.getBackground().setAlpha(255 - (scrollY - 100) / 3);
//            shopping_cart.getBackground().setAlpha(255 - (scrollY - 100) / 3);
        } else {
            mView.getBackground().setAlpha(255);
//            back.getBackground().setAlpha(0);
//            shopping_cart.getBackground().setAlpha(0);
        }
    }

}
